package com.mesystem.managedbean;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.dao.EmptyResultDataAccessException;

import com.mesystem.dto.UsuarioDTO;
import com.mesystem.service.OpcionService;
import com.mesystem.service.UsuarioService;
import com.mesystem.vo.OpcionesRolVO;

public class UsuarioMB extends GeneralMB{
	
	private static final Logger logger = Logger.getLogger(UsuarioMB.class); 
	
	private UsuarioService getUsuarioService(){
		return (UsuarioService)getBean("usuarioService");
	}
	private OpcionService getOpcionService(){
		return (OpcionService)getBean("opcionService");
	}
	
	private UsuarioDTO usuarioBean;
	
	public UsuarioMB() {
		usuarioBean = new UsuarioDTO();
	}
	
	
	public String ingresar(){
		logger.info("<======ingresar==========>");
		String redirecciona = null;
		
		try {
			UsuarioDTO objUsuarioVal = getUsuarioService().validarUsuario(usuarioBean);
			putObjectInSession("idusua", objUsuarioVal.getId());
			putObjectInSession("nomusua", objUsuarioVal.getNombres());
			putObjectInSession("apeusua", objUsuarioVal.getApellidos());
			List<OpcionesRolVO> opcionesUsuario = getOpcionService().listaOpcionesRol(objUsuarioVal.getIdRol());
			putObjectInSession("listaOpciones", opcionesUsuario);
			redirecciona = "bienvenido";
			
		} catch (Exception e) {
			if(e instanceof EmptyResultDataAccessException){
				redirecciona = "login";
				mensajeError("", "El usuario y/o password incorrecto");
			}else{
				logger.error(e.getMessage());
				redirecciona = "login";
				mensajeError("", "Ocurrio un error.");
			}
		}
		return redirecciona;
	}
	
	public String cerrarSesion(){
		removeSession();
		return "/presentacion/inicio/portada/login";
	}
	
	public UsuarioDTO getUsuarioBean() {
		return usuarioBean;
	}

	public void setUsuarioBean(UsuarioDTO usuarioBean) {
		this.usuarioBean = usuarioBean;
	}
}
